﻿#include "dialog.h"
#include "ui_dialog.h"
#include <QDir>
#include <QFileDialog>
Dialog::Dialog(QWidget *parent)
    : QDialog(parent)
    , ui(new Ui::Dialog)
{
    ui->setupUi(this);
}

Dialog::~Dialog()
{
    delete ui;
}

//获取当前目录 即一般打开默认目录
void Dialog::on_pbn_getcurdir_clicked()
{
    QString cur_string = QApplication::applicationDirPath(); //可执行文件的目录路径
    QString cur_string1 = QApplication::applicationFilePath(); //可执行文件的路径
    QString cur_dir = QDir::currentPath(); //获取当前工作目录路径  其他获取主目录，临时目录，磁盘列表，求绝对路径

    ui->le_display->append("cur_string:"+cur_string);
    ui->le_display->append("cur_string1:"+cur_string1);
    ui->le_display->append("cur_dir:"+cur_dir);
}

//在打开文件或者目录时  一般可以设置默认打开的目录 这里要借助全局或者成员变量
static QString default_dir = QDir::currentPath();
void Dialog::on_pbn_setdefdir_clicked()
{
    //打开一个目录 父对象指针  标题栏  初始目录
    //DontResolveSymlinks：不解析符号链接，而是直接显示链接的路径。
    //ShowDirsOnly：仅显示目录，过滤掉文件。
    //ReadOnly：只读模式，在对话框中禁止创建新目录。
    default_dir = QFileDialog::getExistingDirectory(this, "选择默认目录",default_dir, QFileDialog::ShowDirsOnly);
    ui->le_display->append("设置默认打开目录为:"+default_dir+",需要存储信息，后面再次使用。");
}

void Dialog::on_pbn_file_clicked()
{
    //打开一个文件，借助QFileDialog，目录可以用上面设置的，方便操作
    //父对象 标题栏  初始目录 过滤文件类型
    m_file_name = QFileDialog::getOpenFileName(this, "选择一个文件", default_dir, "Text Files (*.txt);;All Files (*)");
    ui->le_file_name->setText(m_file_name);
    ui->le_display->append("选择一个文件："+m_file_name);
}

void Dialog::on_pbn_dir_clicked()
{
    m_dir_name = QFileDialog::getExistingDirectory(this, "选择一个目录",default_dir, QFileDialog::ShowDirsOnly);
    ui->le_dir_name->setText(m_dir_name);
    ui->le_display->append("选择一个目录："+m_dir_name);
}

//这里主要借助QFileInfo 类和qDir类
void Dialog::on_pbn_getfile_dir_clicked() //获取已经选择文件的路径
{
    QFileInfo fileinfo(m_file_name); //也可以是一个目录
    QString reall_filedir = fileinfo.dir().absolutePath(); //获取绝对路径
    QString reall_filename = fileinfo.fileName();
    ui->le_display->append("选择文件的目录为：" + reall_filedir);
}
#include <QDateTime>
void Dialog::on_pbn_getfile_name_clicked() //获取已经选择文件的实际文件名
{
    QFileInfo fileinfo(m_file_name); //相关文件的操作都是借助于QFileInfo 可以探索其他
    QString reall_filename = fileinfo.fileName();
    ui->le_display->append("选择文件的文件名为：" + reall_filename);
    ui->le_display->append("选择文件的路径为："+fileinfo.filePath());
    ui->le_display->append("选择文件的绝对路径为："+fileinfo.absoluteFilePath());
    ui->le_display->append("选择文件的最后修改时间："+fileinfo.lastModified().toString());
}

void Dialog::on_pbn_file_add_suffix_clicked()
{
    QFileInfo fileinfo(m_file_name);
    //需要对目录进行处理 比如要生成一个目标文件在源文件基础上加个后缀
    QString dst_filename = fileinfo.dir().absolutePath()+"/"+fileinfo.baseName()+"_后缀"+"."+fileinfo.suffix();
    ui->le_display->append("处理后目标文件为："+dst_filename);

    //如果要遍历一个目录 可以用QDir类 entryList
}


